package cn.xzhang.boot.service;

import cn.xzhang.boot.common.pojo.PageResult;
import cn.xzhang.boot.model.dto.wallpaperDetails.WallpaperDetailsAddReqDTO;
import cn.xzhang.boot.model.dto.wallpaperDetails.WallpaperDetailsPageReqDTO;
import cn.xzhang.boot.model.dto.wallpaperDetails.WallpaperDetailsUpdateReqDTO;
import cn.xzhang.boot.model.entity.WallpaperDetails;
import cn.xzhang.boot.model.vo.wallpaperDetails.WallpaperDetailsSimpleVo;
import cn.xzhang.boot.model.vo.wallpaperDetails.WallpaperDetailsVo;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * @author <a href="https://github.com/XiaoZhangCode">XiaoZhangCode</a>
 * @description 针对表【wallpaperDetails(壁纸表)】的数据库操作Service
 */
public interface WallpaperDetailsService extends IService<WallpaperDetails> {

    /**
     * 添加壁纸信息。
     *
     * @param wallpaperDetailsReqDTO 壁纸添加请求数据传输对象，包含要添加的壁纸的所有必要信息。
     * @return 返回添加操作的自增ID，用于标识此次添加操作。
     */
    long addWallpaperDetails(WallpaperDetailsAddReqDTO wallpaperDetailsReqDTO);

    /**
     * 更新壁纸信息。
     *
     * @param wallpaperDetailsReqDTO 包含壁纸更新信息的请求DTO（数据传输对象）。该对象应包含需要更新的壁纸属性。
     * @return boolean 返回true如果壁纸信息更新成功，返回false如果更新失败或遇到错误。
     */
    boolean updateWallpaperDetails(WallpaperDetailsUpdateReqDTO wallpaperDetailsReqDTO);

    /**
     * 删除壁纸
     *
     * @param id 壁纸的唯一标识符
     * @return boolean 返回操作是否成功。true表示删除成功，false表示删除失败。
     */
    boolean deleteWallpaperDetails(Long id);

    /**
     * 根据WallpaperDetails对象获取对应的WallpaperDetailsVo对象。
     *
     * @param wallpaperDetails 一个包含壁纸信息的WallpaperDetails对象。
     * @return 返回一个包含壁纸信息的WallpaperDetailsVo对象。
     */
    WallpaperDetailsSimpleVo getSimpleWallpaperDetailsVO(WallpaperDetails wallpaperDetails);

    /**
     * 获取壁纸页面信息
     *
     * @param wallpaperDetailsPageReqDTO 包含分页和筛选条件的壁纸请求数据传输对象
     * @return 返回壁纸页面的结果，包括壁纸列表和分页信息
     */
    PageResult<WallpaperDetailsVo> getWallpaperDetailsPage(WallpaperDetailsPageReqDTO wallpaperDetailsPageReqDTO);

    /**
     * 根据WallpaperDetails对象获取对应的WallpaperDetailsVo对象。
     *
     * @param wallpaperDetails 一个包含壁纸信息的WallpaperDetails对象。
     * @return 返回一个包含壁纸信息的WallpaperDetailsVo对象。
     */
    WallpaperDetailsVo getWallpaperDetailsVO(WallpaperDetails wallpaperDetails);
}
